{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting MNIST_data/train-images-idx3-ubyte.gz\n",
      "Extracting MNIST_data/train-labels-idx1-ubyte.gz\n",
      "Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n",
      "Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n"
     ]
    }
   ],
   "source": [
    "mnist = input_data.read_data_sets(\"MNIST_data/\")\n",
    "trX, trY, teX, teY = mnist.train.images, mnist.train.labels, mnist.test.images, mnist.test.labels\n",
    "  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Network Parameters\n",
    "h_in, w_in = 28, 28  # Image size height and width\n",
    "k = 3   # Kernel size\n",
    "p = 2 # pool\n",
    "s = 2 # Strides in maxpool\n",
    "filters = {1:32,2:32,3:16}\n",
    "activation_fn=tf.nn.relu\n",
    "# Change in dimensions of image after each MaxPool\n",
    "h_l2, w_l2 = int(np.ceil(float(h_in)/float(s))) , int(np.ceil(float(w_in)/float(s)))   # Height and width: second encoder/decoder layer\n",
    "h_l3, w_l3 = int(np.ceil(float(h_l2)/float(s))) , int(np.ceil(float(w_l2)/float(s)))   # Height and width: third encoder/decoder layer\n",
    "\n",
    "   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_noisy = tf.placeholder(tf.float32, (None, h_in, w_in, 1), name='inputs')\n",
    "X = tf.placeholder(tf.float32, (None, h_in, w_in, 1), name='targets')\n",
    "\n",
    "-"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 0/10...  Training loss 0.6888405084609985\n",
      "Epoch: 0/10...  Training loss 0.21820376813411713\n",
      "Epoch: 0/10...  Training loss 0.18392638862133026\n",
      "Epoch: 0/10...  Training loss 0.17025244235992432\n",
      "Epoch: 0/10...  Training loss 0.16260577738285065\n",
      "Epoch: 0/10...  Training loss 0.14627832174301147\n",
      "Epoch: 1/10...  Training loss 0.1571062058210373\n",
      "Epoch: 1/10...  Training loss 0.14689472317695618\n",
      "Epoch: 1/10...  Training loss 0.14627325534820557\n",
      "Epoch: 1/10...  Training loss 0.14121900498867035\n",
      "Epoch: 1/10...  Training loss 0.1406722515821457\n",
      "Epoch: 1/10...  Training loss 0.14484477043151855\n",
      "Epoch: 2/10...  Training loss 0.13390854001045227\n",
      "Epoch: 2/10...  Training loss 0.1319851279258728\n",
      "Epoch: 2/10...  Training loss 0.12598344683647156\n",
      "Epoch: 2/10...  Training loss 0.12923564016819\n",
      "Epoch: 2/10...  Training loss 0.12308519333600998\n",
      "Epoch: 2/10...  Training loss 0.13089706003665924\n",
      "Epoch: 3/10...  Training loss 0.1229218989610672\n",
      "Epoch: 3/10...  Training loss 0.11351560056209564\n",
      "Epoch: 3/10...  Training loss 0.12434203177690506\n",
      "Epoch: 3/10...  Training loss 0.12635578215122223\n",
      "Epoch: 3/10...  Training loss 0.12008006870746613\n",
      "Epoch: 3/10...  Training loss 0.12042881548404694\n",
      "Epoch: 4/10...  Training loss 0.1144920364022255\n",
      "Epoch: 4/10...  Training loss 0.12082037329673767\n",
      "Epoch: 4/10...  Training loss 0.11728109419345856\n",
      "Epoch: 4/10...  Training loss 0.11814809590578079\n",
      "Epoch: 4/10...  Training loss 0.12339118868112564\n",
      "Epoch: 4/10...  Training loss 0.12272779643535614\n",
      "Epoch: 5/10...  Training loss 0.11567778885364532\n",
      "Epoch: 5/10...  Training loss 0.1164618507027626\n",
      "Epoch: 5/10...  Training loss 0.11543942987918854\n",
      "Epoch: 5/10...  Training loss 0.116547591984272\n",
      "Epoch: 5/10...  Training loss 0.11866267025470734\n",
      "Epoch: 5/10...  Training loss 0.115050308406353\n",
      "Epoch: 6/10...  Training loss 0.11534053832292557\n",
      "Epoch: 6/10...  Training loss 0.11823722720146179\n",
      "Epoch: 6/10...  Training loss 0.1095755472779274\n",
      "Epoch: 6/10...  Training loss 0.11234528571367264\n",
      "Epoch: 6/10...  Training loss 0.11841575056314468\n",
      "Epoch: 6/10...  Training loss 0.1072874516248703\n",
      "Epoch: 7/10...  Training loss 0.11615744978189468\n",
      "Epoch: 7/10...  Training loss 0.11043845862150192\n",
      "Epoch: 7/10...  Training loss 0.10788250714540482\n",
      "Epoch: 7/10...  Training loss 0.10769019275903702\n",
      "Epoch: 7/10...  Training loss 0.11905337870121002\n",
      "Epoch: 7/10...  Training loss 0.1085670217871666\n",
      "Epoch: 8/10...  Training loss 0.11764281988143921\n",
      "Epoch: 8/10...  Training loss 0.11454688012599945\n",
      "Epoch: 8/10...  Training loss 0.10958864539861679\n",
      "Epoch: 8/10...  Training loss 0.11494646221399307\n",
      "Epoch: 8/10...  Training loss 0.1098807230591774\n",
      "Epoch: 8/10...  Training loss 0.10728435963392258\n",
      "Epoch: 9/10...  Training loss 0.11256489902734756\n",
      "Epoch: 9/10...  Training loss 0.10676391422748566\n",
      "Epoch: 9/10...  Training loss 0.1104196235537529\n",
      "Epoch: 9/10...  Training loss 0.10469387471675873\n",
      "Epoch: 9/10...  Training loss 0.1057836189866066\n",
      "Epoch: 9/10...  Training loss 0.10659340023994446\n"
     ]
    }
   ],
   "source": [
    "epochs = 10\n",
    "batch_size = 100\n",
    "# Set's how much noise we're adding to the MNIST images\n",
    "noise_factor = 0.5\n",
    "sess.run(tf.global_variables_initializer())\n",
    "err = []\n",
    "for i in range(epochs):\n",
    "    for ii in range(mnist.train.num_examples//batch_size):\n",
    "        batch = mnist.train.next_batch(batch_size)\n",
    "        # Get images from the batch\n",
    "        imgs = batch[0].reshape((-1, h_in, w_in, 1))\n",
    "        \n",
    "        # Add random noise to the input images\n",
    "        noisy_imgs = imgs + noise_factor * np.random.randn(*imgs.shape)\n",
    "        # Clip the images to be between 0 and 1\n",
    "        noisy_imgs = np.clip(noisy_imgs, 0., 1.)\n",
    "        \n",
    "        # Noisy images as inputs, original images as targets\n",
    "        batch_cost, _ = sess.run([cost, opt], feed_dict={X_noisy: noisy_imgs,X: imgs})\n",
    "        err.append(batch_cost)\n",
    "        if ii%100 == 0:\n",
    "            print(\"Epoch: {0}/{1}...  Training loss {2}\".format(i, epochs, batch_cost))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x201b187a128>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nMf8PqZw79e3V7YcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x201b16d6cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(err)\n",
    "plt.xlabel('epochs')\n",
    "plt.ylabel('Cross Entropy Loss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x201b181a208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(nrows=2, ncols=10, sharex=True, sharey=True, figsize=(20,4))\n",
    "in_imgs = mnist.test.images[:10]\n",
    "noisy_imgs = in_imgs + noise_factor * np.random.randn(*in_imgs.shape)\n",
    "noisy_imgs = np.clip(noisy_imgs, 0., 1.)\n",
    "\n",
    "reconstructed = sess.run(decoded, feed_dict={X_noisy: noisy_imgs.reshape((10, 28, 28, 1))})\n",
    "\n",
    "for images, row in zip([noisy_imgs, reconstructed], axes):\n",
    "    for img, ax in zip(images, row):\n",
    "        ax.imshow(img.reshape((28, 28)), cmap='Greys_r')\n",
    "        ax.get_xaxis().set_visible(False)\n",
    "        ax.get_yaxis().set_visible(False)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sess.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:tf-gpu-1p3]",
   "language": "python",
   "name": "conda-env-tf-gpu-1p3-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
